Operadores
## Objetivos de Aprendizaje
- Dominar operadores aritméticos
- Usar operadores de comparación
- Trabajar con operadores lógicos
- Entender operadores de asignación
## Operadores Aritméticos
### Operaciones Básicas
```javascript
let a = 10, b = 3;
console.log(a + b); // 13 (suma)
console.log(a - b); // 7 (resta)
console.log(a * b); // 30 (multiplicación)
console.log(a / b); // 3.333... (división)
console.log(a % b); // 1 (residuo)
console.log(a ** b); // 1000 (exponenciación)
```
### Incremento y Decremento
```javascript
let x = 5;
// Pre-incremento
console.log(++x); // 6 (incrementa, luego usa)
console.log(x); // 6
// Post-incremento
console.log(x++); // 6 (usa, luego incrementa)
console.log(x); // 7
// Pre-decremento
console.log(--x); // 6
// Post-decremento
console.log(x--); // 6
```
## Operadores de Comparación
### Igualdad
```javascript
10 === 10; // true (estricta)
10 !== 5; // true (estricta diferencia)
10 == "10"; // true (débil, convierte tipos)
10 != "5"; // true
// Recomendado: usar === y !==
```
### Comparación Numérica
```javascript
10 > 5; // true (mayor que)
10 < 5; // false (menor que)
10 >= 10; // true (mayor o igual)
10 <= 10; // true (menor o igual)
```
### Casos Especiales
```javascript
0 === false; // false
0 == false; // true
null === undefined; // false
null == undefined; // true
NaN === NaN; // false (NaN no es igual a nada)
isNaN(NaN); // true
```
## Operadores Lógicos
### AND, OR, NOT
```javascript
true && true; // true (AND)
true && false; // false
true || false; // true (OR)
false || false; // false
!true; // false (NOT)
!false; // true
```
### Evaluación de Cortocircuito
```javascript
// AND: retorna primer falsy o último valor
false && console.log("no se ejecuta");
true && "hola"; // "hola"
// OR: retorna primer truthy o último valor
true || "hola"; // true
false || "hola"; // "hola"
// Valores falsy: false, 0, "", null, undefined, NaN
```
### Tabla de Verdad
| A | B | A && B | A \|\| B | !A |
|---|---|---------|-----------|-----|
| true | true | true | true | false |
| true | false | false | true | false |
| false | true | false | true | true |
| false | false | false | false | true |
## Operadores de Asignación
### Asignación Simple
```javascript
let x = 10;
```
### Asignación Compuesta
```javascript
let x = 10;
x += 5; // x = 15 (x = x + 5)
x -= 3; // x = 12 (x = x - 3)
x *= 2; // x = 24 (x = x * 2)
x /= 4; // x = 6 (x = x / 4)
x %= 5; // x = 1 (x = x % 5)
x **= 2; // x = 1 (x = x ** 2)
```
## Operador Ternario
### Sintaxis
```javascript
const edad = 20;
const tipo = edad >= 18 ? "adulto" : "menor";
console.log(tipo); // "adulto"
```
### Anidado (Evitar)
```javascript
const nota = 85;
const grado = nota >= 90 ? "A"
: nota >= 80 ? "B"
: nota >= 70 ? "C"
: "F";
```
## Operador de Concatenación
### Para Strings
```javascript
const nombre = "Juan";
const apellido = "Pérez";
const completo = nombre + " " + apellido; // "Juan Pérez"
const template = `${nombre} ${apellido}`; // "Juan Pérez"
```
## Operadores Bit a Bit
### Operaciones Bit a Bit Básicas
```javascript
// AND
5 & 3; // 1 (0101 & 0011 = 0001)
// OR
5 | 3; // 7 (0101 | 0011 = 0111)
// XOR
5 ^ 3; // 6 (0101 ^ 0011 = 0110)
// NOT
~5; // -6 (~0101 = ...1010 = -6)
// Desplazamiento
2 << 1; // 4 (0010 << 1 = 0100)
4 >> 1; // 2 (0100 >> 1 = 0010)
```
## Operador de Encadenamiento Opcional
### Acceso Seguro a Propiedades
```javascript
const usuario = {
perfil: {
nombre: "Ana"
}
};
// Sin encadenamiento opcional (error si falta)
const nombre = usuario.perfil.nombre;
// Con encadenamiento opcional
const nombre2 = usuario.perfil?.nombre; // "Ana"
const edad2 = usuario.perfil?.edad; // undefined
const ciudad = usuario.direccion?.ciudad; // undefined
```
## Operador de Fusión Nula
### Valor por Defecto
```javascript
const valor = null ?? "predeterminado"; // "predeterminado"
const vacio = "" ?? "predeterminado"; // "" (no es null/undefined)
const cero = 0 ?? "predeterminado"; // 0 (no es null/undefined)
const config = userInput ?? defaultConfig;
```
## Precedencia de Operadores
### Orden de Evaluación
| Prioridad | Operadores |
|------------|------------|
| 1 | `()` (paréntesis) |
| 2 | `**` |
| 3 | `++`, `--`, `!` |
| 4 | `*`, `/`, `%` |
| 5 | `+`, `-` |
| 6 | `<`, `>`, `<=`, `>=` |
| 7 | `===`, `!==` |
| 8 | `&&` |
| 9 | `\|\|` |
| 10 | `??` |
| 11 | `?:` (ternario) |
| 12 | `=`, `+=`, `-=`, etc. |
## Resumen
- Aritméticos: `+`, `-`, `*`, `/`, `%`, `**`
- Comparación: `===`, `!==`, `<`, `>`, `<=`, `>=`
- Lógicos: `&&`, `||`, `!`
- Asignación: `=`, `+=`, `-=`, etc.
- Ternario: `condición ? valor1 : valor2`
- Encadenamiento opcional: `?.`
- Fusión nula: `??`
- Usar paréntesis para clarificar el orden
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →