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 // -> falseEs 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 // -> falseAquí 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 // -> trueEs el interruptor de la luz. Si está encendida (true), al pulsarlo se apaga (false). Si está apagada (false), al pulsarlo se enciende (true).
&& necesita que todos sean true, a || le basta con uno y ! da la vuelta al valor.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 // -> trueLa 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:// -> falsefalse && true da false. Ese es el resultado final.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 // -> trueTambié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 // -> falseSi 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) devuelvetruesolo si los dos valores sontrue.||(OR) devuelvetruesi alguno de los valores estrue.!(NOT) invierte un booleano:truepasa afalsey al revés.- En una expresión combinada, primero va la aritmética, después las comparaciones y al final
&&y||.