Operadores lógicos (AND, OR, NOT)
Cómo se combinan condiciones con &&, || y !: qué significa cada uno, cómo se leen juntos y por qué conviene poner paréntesis y nombres claros.
Definición rápida
Los operadores lógicos combinan booleanos: AND exige que todos se cumplan, OR que se cumpla al menos uno y NOT invierte el valor.
Los operadores lógicos combinan condiciones: && (Y), || (O) y ! (NO). Sirven para pasar de comprobar una sola cosa a expresar una regla completa, del tipo «puede comprar si es mayor de edad y tiene saldo».
Los tres, con ejemplos
true && true; // true → && exige que ambos se cumplan
true && false; // false
false || true; // true → || basta con uno
false || false; // false
!true; // false → ! invierte
Aplicado a un caso concreto:
const edad = 20;
const tieneSaldo = true;
const puedeComprar = edad >= 18 && tieneSaldo; // true
Guardar la condición en una variable con buen nombre es uno de los hábitos que más mejora la legibilidad: el condicional queda en una línea que se lee como una frase.
Paréntesis: úsalos
! se aplica primero, después && y por último ||. Es decir:
// esto...
if (esSocio || esMayor && tieneEntrada) { }
// ...significa esto
if (esSocio || (esMayor && tieneEntrada)) { }
Las dos líneas son idénticas para el intérprete y muy distintas para quien lee el código. Escribe los paréntesis aunque no sean necesarios.
Evitar la doble negación
// ilegible
if (!(edad < 18 || !tieneEntrada)) { }
// lo mismo, en positivo
const puedePasar = edad >= 18 && tieneEntrada;
if (puedePasar) { }
Cuando te encuentres negando una condición compuesta, casi siempre existe una versión equivalente en positivo con la mitad de carga mental.
Errores típicos
- Confundir
&&con||. «Mayor de edad o con entrada» deja pasar a un niño con entrada; comprueba si el enunciado exige las dos cosas o una. - Usar
&o|(un solo símbolo): son operadores de bits, no lógicos, y producen resultados numéricos inesperados. - Encadenar cinco condiciones en un
if. Divídelas en variables con nombre.
Dónde se practica
Lo que cuesta no son los símbolos, es leer un enunciado en castellano y decidir si esa regla es un Y, un O, o una combinación con negaciones. Ese ejercicio de traducción es el que se hace en el módulo 3 del curso, con validaciones que se comprueban automáticamente contra los casos que suelen fallar. Consulta el temario.
Preguntas frecuentes
¿&& o || tienen prioridad?
&& se evalúa antes que ||, igual que la multiplicación antes que la suma. Cuando mezcles los dos, usa paréntesis: es más claro y evita errores.
¿Cómo se niega una condición compuesta?
!(a && b) equivale a !a || !b, y !(a || b) equivale a !a && !b. En la práctica casi siempre es más legible reescribir la condición en positivo.
¿Puedo usar && con valores que no sean booleanos?
Sí, y JavaScript los interpreta como verdaderos o falsos, pero al empezar es mejor mantener las condiciones como comparaciones explícitas para que el código diga lo que quieres decir.