Skip to content

Lección 10: Operadores Lógicos

Los operadores lógicos nos permiten combinar condiciones booleanas. Son esenciales para crear lógica compleja en nuestros programas.

&& (AND — Y lógico)

Devuelve true solo si ambos valores son verdaderos.

console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false

|| (OR — O lógico)

Devuelve true si al menos uno de los valores es verdadero.

console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false

! (NOT — Negación)

Invierte el valor booleano.

console.log(!true); // false
console.log(!false); // true
console.log(!0); // true (0 es falsy)
console.log(!'hola'); // false ('hola' es truthy)

JavaScript evalúa solo lo necesario. En &&, si el primer valor es false, no evalúa el segundo. En ||, si el primer valor es true, no evalúa el segundo.

// AND short-circuit: si el primero es false, no evalúa el segundo
false && console.log('No me ejecuto'); // no muestra nada
true && console.log('Me ejecuto'); // muestra el mensaje
// OR short-circuit: si el primero es true, no evalúa el segundo
true || console.log('No me ejecuto'); // no muestra nada
false || console.log('Me ejecuto'); // muestra el mensaje

Valores truthy y falsy en operadores lógicos

Section titled “Valores truthy y falsy en operadores lógicos”

Los operadores lógicos no siempre devuelven true o false. Devuelven el valor del operando que determina el resultado.

console.log('Hola' && 'Mundo'); // "Mundo" (ambos truthy, devuelve el último)
console.log(null && 'Hola'); // null (null es falsy, cortocircuito)
console.log('Hola' || null); // "Hola" (primer truthy)
console.log('' || 'default'); // "default" ('' es falsy)
let edad = 25;
let tieneLicencia = true;
// AND: ambos deben cumplirse
if (edad >= 18 && tieneLicencia) {
console.log('Puedes conducir');
}
// OR: al menos uno debe cumplirse
let esAdmin = false;
let esModerador = true;
if (esAdmin || esModerador) {
console.log('Tienes acceso al panel');
}
// NOT: negar una condición
let estaLogueado = false;
if (!estaLogueado) {
console.log('Debes iniciar sesión');
}
// Cortocircuito práctico: valores por defecto
let nombreUsuario = '';
let nombre = nombreUsuario || 'Invitado';
console.log('Hola,', nombre); // "Hola, Invitado"
  1. Crea un archivo operadores-logicos.js.
  2. Declara tres variables: edad >= 18, tieneBoleto, estaEnLista.
  3. Usa operadores lógicos para determinar si alguien puede entrar a un concierto:
    • Debe ser mayor de edad Y tener boleto.
    • O estar en la lista VIP (aunque no tenga boleto).
  4. Prueba diferentes combinaciones.
let edad = 20;
let tieneBoleto = false;
let estaEnLista = true;
// Condición compuesta
if ((edad >= 18 && tieneBoleto) || estaEnLista) {
console.log('¡Puedes entrar!');
} else {
console.log('No puedes entrar');
}
// Experimenta con short-circuit
console.log('Resultado:', 'valor1' && 'valor2' && 'valor3');
console.log('Resultado:', null || 'default' || 'otro');

El operador && tiene mayor precedencia que ||. Esto significa que:

console.log(true || false && false); // true
// Se evalúa como: true || (false && false)
// true || false → true

Usa paréntesis para hacer explícita tu intención.

El patrón de valor por defecto con || es muy común:

let opciones = usuarioConfig || { tema: 'oscuro' };

Y el patrón de ejecución condicional con &&:

estaLogueado && mostrarPanel();
// Solo ejecuta mostrarPanel() si estaLogueado es true