14. Precedencia de operadores lógicos

La precedencia indica qué operadores se evalúan primero en una expresión lógica. Conocerla evita ambigüedades y ayuda a escribir condiciones correctas.

14.1 Introducción

Cuando una expresión lógica contiene varios operadores, necesitamos saber en qué orden se evalúan. Ese orden se llama precedencia o prioridad de operadores.

Por ejemplo, la expresión ¬p ∨ q ∧ r puede resultar confusa si no sabemos qué parte se evalúa primero.

14.2 Qué es la precedencia

La precedencia define qué operador se aplica antes cuando una expresión no tiene paréntesis suficientes.

Los operadores con mayor precedencia se evalúan antes que los operadores con menor precedencia.

Esto es similar a lo que ocurre en aritmética: en 2 + 3 × 4, primero se evalúa la multiplicación y luego la suma.

14.3 Orden usual en lógica

En lógica proposicional se suele usar el siguiente orden de precedencia:

Prioridad Operador Nombre
1 ¬ Negación
2 Conjunción
3 Disyunción
4 Implicación
5 Bicondicional

La negación tiene mayor prioridad que la conjunción, y la conjunción tiene mayor prioridad que la disyunción.

14.4 Paréntesis primero

Los paréntesis tienen la máxima prioridad. Permiten indicar explícitamente qué parte debe evaluarse antes.

Expresión Agrupación
p ∨ q ∧ r p ∨ (q ∧ r)
(p ∨ q) ∧ r Se fuerza primero p ∨ q
¬p ∧ q (¬p) ∧ q
¬(p ∧ q) Se niega toda la conjunción

14.5 Ejemplo paso a paso

Analicemos la expresión:

¬p ∨ q ∧ r

Por precedencia, se interpreta así:

(¬p) ∨ (q ∧ r)

Primero se evalúa la negación, luego la conjunción y finalmente la disyunción.

14.6 Ejemplo con valores

Supongamos los siguientes valores:

  • p = verdadero
  • q = verdadero
  • r = falso

Evaluamos ¬p ∨ q ∧ r:

  1. ¬p es falso.
  2. q ∧ r es falso.
  3. ¬p ∨ q ∧ r es falso.

14.7 Precedencia en JavaScript

En JavaScript, los operadores lógicos principales también tienen un orden de precedencia.

Prioridad Operador Nombre
1 ! Negación lógica
2 && AND lógico
3 || OR lógico

Esto significa que !p || q && r se interpreta como (!p) || (q && r).

14.8 Ejemplo en JavaScript

const p = true;
const q = true;
const r = false;

const resultado = !p || q && r;

console.log(resultado);

Primero se evalúa !p, luego q && r, y finalmente el operador ||.

14.9 Usar paréntesis aunque no sean obligatorios

Aunque conozcamos la precedencia, muchas veces conviene escribir paréntesis para que la intención sea evidente.

const resultado = (!p) || (q && r);

Esta forma no cambia el resultado, pero mejora la lectura. En código de producción, la claridad suele ser más importante que ahorrar caracteres.

14.10 Cuando los paréntesis cambian el resultado

Comparemos dos expresiones parecidas:

Expresión Agrupación
p || q && r p || (q && r)
(p || q) && r Se evalúa primero p || q

Estas expresiones pueden producir resultados diferentes.

const p = true;
const q = false;
const r = false;

console.log(p || q && r);
console.log((p || q) && r);

14.11 Negación de expresiones completas

La negación tiene alta precedencia, por eso es importante usar paréntesis cuando queremos negar una expresión completa.

Expresión Significado
!p && q Se niega p y luego se combina con q
!(p && q) Se niega toda la conjunción
!p || q Se niega p y luego se aplica OR con q
!(p || q) Se niega toda la disyunción

14.12 Reglas prácticas para programar

En código, una expresión lógica debe ser correcta y fácil de leer.

  • Usa paréntesis cuando una expresión mezcla && y ||.
  • Separa condiciones largas en variables booleanas intermedias.
  • Evita depender de que el lector recuerde toda la tabla de precedencia.
  • Usa nombres de variables que expresen proposiciones claras.

14.13 Ejemplo de mejora de legibilidad

Esta expresión funciona, pero cuesta leerla:

const puedeEditar = esAdmin || esAutor && !documentoBloqueado && cuentaActiva;

Podemos escribirla con grupos más claros:

const autorPuedeEditar = esAutor && !documentoBloqueado;
const puedeEditar = (esAdmin || autorPuedeEditar) && cuentaActiva;

La segunda versión comunica mejor la regla.

14.14 Precedencia y errores de permisos

Un error de agrupación puede cambiar una regla de permisos.

Expresión Interpretación
esAdmin || esEditor && cuentaActiva Admin siempre accede; editor necesita cuenta activa
(esAdmin || esEditor) && cuentaActiva Admin o editor acceden solo si la cuenta está activa

Las dos reglas no son equivalentes. Por eso los paréntesis no son solo un detalle de estilo.

14.15 Errores comunes

  • Creer que los operadores se evalúan siempre de izquierda a derecha sin considerar precedencia.
  • Olvidar que la negación se aplica antes que AND y OR.
  • Mezclar && y || sin paréntesis.
  • Negar solo una proposición cuando se quería negar una expresión completa.
  • Escribir condiciones compactas pero difíciles de revisar.

14.16 Qué debes recordar de este tema

  • La precedencia indica qué operador se evalúa primero.
  • En lógica, la negación suele tener mayor prioridad que la conjunción, y la conjunción mayor prioridad que la disyunción.
  • En JavaScript, ! tiene mayor prioridad que &&, y && mayor prioridad que ||.
  • Los paréntesis permiten modificar o aclarar el orden de evaluación.
  • En condiciones importantes, conviene priorizar claridad sobre brevedad.

14.17 Conclusión

La precedencia de operadores permite interpretar expresiones lógicas sin ambigüedad. Sin embargo, en programación es recomendable usar paréntesis y variables intermedias cuando una condición puede prestarse a confusión.

En el próximo tema estudiaremos las tablas de verdad.