Unidad 2

Operadores lógicos y de comparación

Operadores de asignación, aritméticos, de comparación, lógicos, de cadena y el condicional ternario.

Los operadores son los símbolos con los que se manipulan los valores: asignarlos, calcular con ellos, compararlos y combinar condiciones.

Asignación

= guarda un valor en una variable. Las formas compuestas abrevian “opera y guarda”:

let puntos = 10;
puntos += 5;   // puntos = puntos + 5  → 15
puntos -= 3;   // 12
puntos *= 2;   // 24
puntos /= 4;   // 6

Aritméticos

Operador Nombre Ejemplo Resultado
+ Suma 7 + 2 9
- Resta 7 - 2 5
* Multiplicación 7 * 2 14
/ División 7 / 2 3.5
% Resto (módulo) 7 % 2 1
** Potencia 7 ** 2 49
++ Incremento n++ suma 1 a n
-- Decremento n-- resta 1 a n

El resto % es más útil de lo que parece: n % 2 vale 0 si n es par, y n % 10 da la última cifra de n.

Comparación

Comparan dos valores y devuelven un booleano:

Operador Significado
> < >= <= Mayor, menor, mayor o igual, menor o igual
== != Igual, distinto, con conversión de tipos
=== !== Igual, distinto, estrictos: mismo valor y mismo tipo

La diferencia entre == y === importa:

5 == '5';      // true   → convierte el texto a número y compara
5 === '5';     // false  → distinto tipo, sin más
0 == false;    // true
0 === false;   // false
null == undefined;   // true
null === undefined;  // false

Usa siempre === y !==. La igualdad con conversión tiene reglas difíciles de recordar y produce errores que cuesta encontrar.

Lógicos

Combinan o niegan condiciones. Con a y b booleanos:

a b a && b (AND) a || b (OR)
true true true true
true false false true
false true false true
false false false false

! niega: !true es false.

const edad = 20;
const socio = false;

edad >= 18 && socio;    // false: las dos tienen que cumplirse
edad >= 18 || socio;    // true: basta con una
!socio;                 // true
Evaluación en cortocircuito

&& deja de evaluar en cuanto encuentra un false, y || en cuanto encuentra un true. Por eso usuario && usuario.nombre no falla cuando usuario es null: el segundo lado ni se mira.

Cadena

El + con textos concatena. Si uno de los dos lados es texto, el otro se convierte:

'Hola, ' + 'Ana';     // 'Hola, Ana'
'Nota: ' + 7;         // 'Nota: 7'
'Total: ' + 2 + 3;    // 'Total: 23'  → se evalúa de izquierda a derecha
'Total: ' + (2 + 3);  // 'Total: 5'

Condicional (ternario)

Resume un if / else que sólo elige entre dos valores:

condición ? valorSiCierto : valorSiFalso
const edad = 16;
const mensaje = edad >= 18 ? 'Puede votar' : 'No puede votar';

Úsalo cuando la elección cabe en una línea y se lee de un vistazo. Si hace falta anidar ternarios, es momento de pasar a if.

Ejemplo 1: comparar

Escribe la función esMayorDeEdad(edad) que devuelva true si edad es 18 o más, y false en caso contrario. Debe devolver el resultado de la comparación directamente, sin if.

function esMayorDeEdad(edad) {

}

console.log(esMayorDeEdad(20));
console.log(esMayorDeEdad(15));
Ctrl + Enter ejecuta · Tab indenta · Esc y luego Tab sale del editor

Salida de consola

Sin salida todavía.

Los tests se muestran al ejecutar.

Ver solución del ejemplo 1
function esMayorDeEdad(edad) {
  return edad >= 18;
}

La comparación ya devuelve true o false, así que no hace falta if (edad >= 18) return true; else return false;: es lo mismo con más pasos.

Ejemplo 2: combinar condiciones

Escribe la función esParYPositivo(n) que devuelva true sólo si n es par y mayor que cero. Usa el operador % para saber si es par y && para exigir las dos condiciones.

function esParYPositivo(n) {

}

console.log(esParYPositivo(4));
console.log(esParYPositivo(-4));
console.log(esParYPositivo(3));
Ctrl + Enter ejecuta · Tab indenta · Esc y luego Tab sale del editor

Salida de consola

Sin salida todavía.

Los tests se muestran al ejecutar.

Ver solución del ejemplo 2
function esParYPositivo(n) {
  return n % 2 === 0 && n > 0;
}

Con && las dos condiciones tienen que cumplirse. El test con 0 es el que descubre si has escrito >= por descuido.

Ejemplo 3: el operador ternario

Escribe la función etiquetaNota(nota) que devuelva el texto aprobado si la nota es 5 o más y suspenso si es menor. Resuélvelo en una sola línea con el operador ternario.

function etiquetaNota(nota) {
  return
}

console.log(etiquetaNota(7));
console.log(etiquetaNota(3));
Ctrl + Enter ejecuta · Tab indenta · Esc y luego Tab sale del editor

Salida de consola

Sin salida todavía.

Los tests se muestran al ejecutar.

Ver solución del ejemplo 3
function etiquetaNota(nota) {
  return nota >= 5 ? 'aprobado' : 'suspenso';
}

Ojo con el return solo en una línea: JavaScript inserta un punto y coma detrás y la función devuelve undefined. La expresión tiene que ir en la misma línea que el return.