Cuando una expresión combina varias operaciones, el orden de evaluación cambia el resultado. Los paréntesis permiten controlar ese orden y escribir cálculos más claros.
En matemática y en programación, las expresiones no se resuelven necesariamente de izquierda a derecha. Cada operador tiene una prioridad. Por eso, una multiplicación puede ejecutarse antes que una suma aunque aparezca después en la expresión.
Este tema es fundamental porque muchos errores de programación no aparecen por desconocer una operación, sino por escribir una expresión cuyo orden de evaluación no es el que esperamos.
En JavaScript se aplican reglas de precedencia similares a las que usamos en matemática básica, aunque el lenguaje incluye muchos operadores adicionales.
La prioridad de operadores indica qué operación se realiza primero cuando una expresión contiene varios operadores.
La multiplicación tiene mayor prioridad que la suma, por lo tanto se calcula primero 3 × 4 y luego se suma 2.
console.log(2 + 3 * 4);
Si se resolviera estrictamente de izquierda a derecha, el resultado sería distinto. Por eso es importante conocer la regla.
En expresiones aritméticas básicas, el orden habitual es:
En JavaScript, las potencias se escriben con **, la multiplicación con *, la división con /, la suma con + y la resta con -.
| Prioridad | Operación | Operador en JavaScript | Ejemplo |
|---|---|---|---|
| Alta | Paréntesis | ( ) | (2 + 3) * 4 |
| Alta | Potencia | ** | 2 ** 3 |
| Media | Multiplicación y división | * y / | 10 / 2 * 3 |
| Baja | Suma y resta | + y - | 10 - 3 + 1 |
Los paréntesis fuerzan que una parte de la expresión se calcule antes que el resto. Esto permite cambiar el orden natural de prioridad.
console.log(2 + 3 * 4);
console.log((2 + 3) * 4);
La primera expresión multiplica antes de sumar. La segunda suma primero porque la suma está entre paréntesis.
Aunque una expresión funcione sin paréntesis, a veces conviene agregarlos para que la intención sea más evidente. En programación, el código se lee muchas más veces de las que se escribe.
const precio = 1000;
const impuesto = 21;
const total = precio + (precio * impuesto / 100);
console.log(total);
Los paréntesis no son obligatorios en este caso, pero ayudan a ver que primero se calcula el impuesto y luego se suma al precio.
Cuando dos operadores tienen la misma prioridad, JavaScript evalúa la expresión según la asociatividad del operador. Para multiplicación y división, se evalúa de izquierda a derecha.
console.log(24 / 3 * 2);
console.log(24 / (3 * 2));
Las dos expresiones contienen los mismos números y operadores relacionados, pero los paréntesis cambian el agrupamiento y por eso cambia el resultado.
La suma y la resta tienen la misma prioridad. Se evalúan de izquierda a derecha, salvo que usemos paréntesis para indicar otro agrupamiento.
console.log(20 - 5 + 2);
console.log(20 - (5 + 2));
En la segunda expresión, el paréntesis hace que primero se sume 5 + 2 y luego se reste ese resultado a 20.
JavaScript usa el operador ** para calcular potencias. Este operador tiene mayor prioridad que multiplicación, división, suma y resta.
console.log(2 + 3 ** 2);
console.log((2 + 3) ** 2);
La primera expresión calcula primero la potencia 3 ** 2. La segunda eleva al cuadrado el resultado de 2 + 3.
Cuando combinamos números negativos y potencias, los paréntesis son especialmente importantes. No es lo mismo elevar un número negativo que negar el resultado de una potencia.
console.log(-(3 ** 2));
console.log((-3) ** 2);
En el primer caso, se calcula 3 ** 2 y luego se aplica el signo negativo. En el segundo, el número completo -3 se eleva al cuadrado.
Las reglas de prioridad no cambian cuando usamos variables. El lenguaje reemplaza mentalmente cada variable por su valor y evalúa la expresión según los operadores.
const a = 10;
const b = 5;
const c = 2;
console.log(a + b * c);
console.log((a + b) * c);
Los nombres de variables ayudan a expresar significado, pero no modifican las reglas matemáticas de evaluación.
Para calcular el promedio de tres valores, primero debemos sumar los valores y luego dividir por la cantidad. Si omitimos los paréntesis, la división se realiza antes que parte de la suma.
const nota1 = 8;
const nota2 = 7;
const nota3 = 10;
const promedioIncorrecto = nota1 + nota2 + nota3 / 3;
const promedioCorrecto = (nota1 + nota2 + nota3) / 3;
console.log(promedioIncorrecto);
console.log(promedioCorrecto);
Este ejemplo muestra por qué los paréntesis no son un detalle estético: pueden cambiar completamente el resultado de un programa.
Supongamos que queremos calcular el total de una compra y aplicar un descuento sobre el subtotal. Primero se calcula el subtotal y luego se descuenta el porcentaje correspondiente.
const precio = 1500;
const cantidad = 3;
const descuento = 10;
const subtotal = precio * cantidad;
const total = subtotal - (subtotal * descuento / 100);
console.log(subtotal);
console.log(total);
Los paréntesis hacen visible que el porcentaje se calcula antes de restarlo del subtotal.
La prioridad también existe en expresiones lógicas. En JavaScript, el operador && tiene mayor prioridad que ||. Aun así, los paréntesis suelen mejorar la claridad.
const edad = 20;
const tienePermiso = false;
const esAdministrador = true;
const puedeEntrar = (edad >= 18 && tienePermiso) || esAdministrador;
console.log(puedeEntrar);
El uso de paréntesis permite distinguir qué condiciones forman parte del mismo grupo lógico.
const base = 12;
const altura = 8;
const area = base * altura;
const mitadDelArea = area / 2;
console.log(mitadDelArea);
Separar el cálculo en pasos facilita la lectura y reduce errores.
La prioridad de operadores define cómo se resuelve una expresión. Comprenderla permite evitar errores silenciosos, especialmente cuando combinamos varias operaciones en una misma línea.
En el próximo tema estudiaremos potencias y raíces con más detalle, y veremos cómo expresarlas en JavaScript.