Saltar al contenido principal
01Introducción

Operadores lógicos

Clase 5 de 104 min de lectura

Con una sola comparación no se llega muy lejos. Las preguntas interesantes suelen venir combinadas: ¿se cumple esto y aquello?, ¿se cumple esto o lo otro? Para eso existen los operadores lógicos, en JavaScript y en muchos otros lenguajes de programación.

Son solo tres: AND (&&), OR (||) y NOT (!). Para entenderlos, piensa en las luces de tu casa: encendida es true, apagada es false.

Operador lógico AND &&#

El operador lógico AND se indica con &&. Devuelve true solo cuando los dos valores que conecta son true.

true && true // -> truetrue && false // -> falsefalse && false // -> false

Es como preguntar: ¿están todas las luces encendidas? Compruebas cada una y, si todas lo están, la respuesta es true. En cuanto hay una apagada, la respuesta es false.

Operador lógico OR ||#

El operador lógico OR se indica con || y es menos exigente: devuelve true cuando cualquiera de los valores que conecta es true.

true || true // -> truetrue || false // -> truefalse || false // -> false

Aquí la pregunta es: ¿hay alguna luz encendida? Con que una lo esté, la respuesta es true. Solo si todas están apagadas la respuesta es false.

Operador lógico NOT !#

El operador lógico NOT se indica con ! y hace algo distinto: no conecta dos valores, sino que invierte un valor booleano. Se pone delante del valor que quieres invertir.

!true // -> false!false // -> true

Es el interruptor de la luz. Si está encendida (true), al pulsarlo se apaga (false). Si está apagada (false), al pulsarlo se enciende (true).

Infografía
&&, || y ! como interruptores de luz
5.En resumen: && necesita que todos sean true, a || le basta con uno y ! da la vuelta al valor.
Paso 5 de 5

Combinando operadores lógicos, aritméticos y de comparación#

Lo bueno llega al juntar los operadores lógicos con los de comparación. Por ejemplo, para preguntar si un número está entre otros dos:

2 < 3 && 3 < 4 // -> true

La expresión es true porque 2 < 3 es true y 3 < 4 también. Si cualquiera de las dos comparaciones fuera false, el resultado sería false.

También puedes meter operaciones aritméticas en la misma expresión:

2 + 2 < 3 && 10 < 8 * 2 // -> false

¿Cómo se lee algo así? Por orden: las operaciones aritméticas tienen precedencia sobre las de comparación, y las comparaciones se resuelven antes que && y ||. Paso a paso:

2 + 2 < 3 && 10 < 8 * 2// Primero se hacen las operaciones aritméticas:// -> 4 < 3 && 10 < 16// Ahora las comparaciones:// -> false && true// Finalmente:// -> false
Infografía
En qué orden se evalúa una expresión
4.Por último el operador lógico: false && true da false. Ese es el resultado final.
Paso 4 de 4
Ejercicios de código interactivos
Comprueba si 7 es mayor que 8 y menor que 10
Tenemos un producto en una tienda. Cuesta 1500€ y tiene un descuento del 25%. Tengo 1150€ en mi cartera. Escribe un código que me diga si me llega para pagar el precio final (con el descuento ya aplicado). No uses paréntesis.

Dos o más operandos#

Hasta ahora todos los ejemplos conectaban dos valores (dos operandos), pero nada te impide encadenar más:

true && true && true // -> true

También puedes mezclar operadores lógicos distintos. En ese caso JavaScript resuelve primero los !, después los && y por último los ||:

true && true || false // -> true!true && !true // -> falsefalse && true || !true // -> false

Si ahora te cuesta ver qué está pasando, es normal: con la práctica te irá resultando más fácil. Haz los ejercicios y juega con los operadores hasta que te vayan quedando claros.

En resumen

  • && (AND) devuelve true solo si los dos valores son true.
  • || (OR) devuelve true si alguno de los valores es true.
  • ! (NOT) invierte un booleano: true pasa a false y al revés.
  • En una expresión combinada, primero va la aritmética, después las comparaciones y al final && y ||.