Expresiones y jerarquía de operadores (Parte 1: Operadores aritméticos)
Dado que las tareas iniciales de una computadora fueron (y continúan siendo) la realización de cálculos matemáticos, parece natural que los primeros programas que se les propongan a los programadores novicios sean precisamente aquellos en los que se requiera evaluar expresiones aritméticas, relacionales y/o lógicas. En este que es el primer artículo de esta serie, te muestro cuales son estos operadores.
Una expresión se compone de un conjunto de operadores y operandos. Los operadores nos permiten realizar operaciones aritméticas entre los operandos, los cuales son los datos y pueden ser constantes o variables.
Aunque el número y tipo de operadores depende del lenguaje de programación que se esté utilizando, los operadores más frecuentes se clasifican de la siguiente forma:
- Aritméticos.
- Relacionales.
- Lógicos o booleanos
- De asignación
En este artículo sólo se discutirán los operadores aritméticos, y los restantes se irán descibiendo en publicaciones futuras.
Operadores aritméticos
Los operadores aritméticos como su nombre lo indica, realizan operaciones aritméticas entre datos de tipo numérico, y devuelven un resultado numérico. En la figura 1 te muestro los operadores aritméticos del lenguaje de programación Java
Los operadores aritméticos utilizan operandos numéricos (ya sea en forma de variables, constantes simbólicas o constantes numéricas) y generan un resultado tipo numérico también. Si te lo imaginas como un proceso, la figura 2 te ayuda a entender este proceso.
En la figura 3 te muestro ejemplos del uso de los operadores aritméticos. Observa que los operandos SIEMPRE son datos de tipo numérico (enteros o decimales) y el resultado de evaluar el operador también es un dato de tipo numérico.
Algunas observaciones sobre el uso de los operadores aritméticos.
La multiplicación.
En programación, es obligatorio usar el símbolo * cada vez que se desea realizar una multiplicación. En programación, a diferencia de lo que sucede en matemáticas, dos variables juntas no implican multiplicación. Por ejemplo:
y = xz
En matemáticas indica que el valor de y es igual a la multiplicación entre las variables x, y z. En programación, tenemos que indicar explícitamente esta operación de la siguiente forma:
y = x * z;
Lo mismo sucede con los paréntesis. En matemáticas se utilizan tanto para agrupar términos de una ecuación, como para multiplicarlos. En programación ningún otro símbolo sirve para multiplicar más que el *. Como se verá más adelante, el uso de los paréntesis en programación está reservado ya sea para alterar la jerarquía de operadores, o para llamar a un método. Por lo tanto, una expresión matemática de la siguiente forma:
y = 3x(2z+6)
Debe ser traducida considerando la funcionalidad de los operadores del lenguaje que se va a utilizar para programar. En el caso de Java (y una gran mayoría de los lenguajes de programación populares), la conversión es la siguiente:
y = 3 * x * ( 2* z + 6 );
El operador residuo.
El operador % se conoce como “módulo de la división”. Este operador obtiene el residuo de una división entre números enteros. Si ya has olvidado las partes de una división, te tengo una figura para que las recuerdes y puedas entender esta operación.
En la operación de la división, normalmente después de dividir 13 entre 2 y obtener el cociente de 6, se nos ha enseñado desde muy pequeños a colocar un punto decimal después del 13, (13.0) para bajar el 0 a la parte del residuo y continuar dividiendo hasta que el residuo sea cero.
En el caso del operador residuo (%), también conocido como módulo de la división, debemos recordar que este operador sólo se puede aplicar en el caso de tener dos operandos ENTEROS. Y el resultado de esta operación es el residuo ENTERO (es decir, lo que sobra de dividr los dos operandos enteros)
Este operador es sumamente importante, pues existen varias propiedades de los números que se pueden resolver sencillamente mediante su aplicación. Por ejemplo:
- ¿Cómo sabes si un número es par? ¡Fácil! Tódo número que es divisible entre dos es par. Traducción: Todo número que al dividirlo entre 2 tenga un residuo de 0 es par. (10/2: residuo= 0, 10 es par; 26/2: residuo = 0, 26 es par. etc.)
- ¿Cómo saber si un número es divisor de otro? Por ejemplo, ¿cómo sabes si el número 7 es divisor de 49? Si divides 49 entre 7 y su residuo te da 0, claramente 7 es divisor de 49.
Y así como estos casos, existirán más que te permitirán recordar la utilidad del operador residuo; y lo más importante, en lugar de estarte quebrando la cabeza sobre cómo realizar el programa, recordarás que la solución es muy sencilla si utilizas este operador.
Evaluación de expresiones y jerarquía de los operadores aritméticos.
La jerarquía o precedencia de operadores es simplemente un conjunto de reglas que indica cuál de todos los operadores aritméticos debe realizarse primero.
Para obtener el resultado de una expresión aritmética (o evaluar una expresión) se deben considerar las reglas de precedencia de operadores, las cuales son las siguientes:
- Los operadores se evaluan de izquierda a derecha, y respetando la jerarquía de estos.
- La jerarquía de operadores aritméticos es la siguiente:
- Nivel 1: * / %
- Nivel 2: + –
- Los únicos operadores que pueden alterar estas reglas son los paréntesis ( ).
Observa la figura 5 con un ejemplo de evaluación de expresiones que considera estas reglas.

Figura 5. Evaluando una expresión aritmética considerando la precedencia de operadores
Algunos comentarios sobre esta figura:
- El primer paso que se realiza es sustituir el valor de la variable en la expresión
- Posteriormente, se eliminan los paréntesis realizando las operaciones que se encuentren entre estos, en este caso:
- 2-3
- 8-3*3
- Las operaciones que se encuentran dentro de paréntesis, siguen respetando la regla de precedencia de operadores, por eso en 8-3*3 primero se realiza 3*3 (la multiplicación tiene mayor precedencia que la resta) y después el resultado, 9, se integra a la operación de resta: 8-9.
- En el caso de encontrarse dos operadores con el mismo nivel de jerarquía, como en 3*3/-1, en donde la multiplicación y la división tienen el mismo nivel de precedencia, se realiza primero el operador que se encuentre primero de derecha a izquierda. Por ello se realiza primero la multiplicación de 3*3 y este resutado se divide entre -1.
Toma un poco de tiempo aprender la jerarquía de operadores, sobre todo porque implica deshacernos de viejos hábitos encarnados en lo profundo de nuestro ser desde temprana edad. Pero es sumamente importante hacerlo, pues la computadora siempre utiliza la precedencia para evaluar expresiones; y puede hacer la diferencia entre invertir muchas horas de depuración de un programa y entender rápidamente donde se encuentra el problema.
Esperando que este artículo haya sido de su utilidad, me despido hasta la próxima entrada.
De mucha ayuda gracias por la información que has publcado
Para eso estamos
holaa como puedo saber la misma información acerca de los operadores relacionales y lógicos
Hola.
De hecho he escrito varias entradas sobre los operadores relacionales y lógicos. Puedes consultar esta información en los siguientes artículos:
Sobre operadores lógicos:
https://dcodingames.com/operadores-logicos/
Sobre operadores relacionales:
https://dcodingames.com/operadores-relacionales/
Sobre expresiones condicionales:
https://dcodingames.com/como-escribir-expresiones-condicionales/
https://dcodingames.com/errores-comunes-al-escribir-expresiones-condicionales/
Espero que te sean de utilidad.
Saludos!
hola, muy buena informacion pero acerca de eso como funciona cuando son parentesis y corchetes?
Hola. En matemáticas se utilizan los paréntesis para agrupar y para multiplicar. Alternativamente, se permite el uso de corchetes [] e incluso llaves {} para agrupar en un nivel superior cuando ya se han usado los paréntesis, y esto más que nada se hace para no confundir dónde debe terminar el término agrupado por paréntesis y el agrupado por corchetes.
En pocas palabras, tanto los corchetes como las llaves tienen la misma función de agrupamiento que tienen los paréntesis.
En programación, y en específico en lenguajes como Java y C, las llaves denotan el inicio/fin de clases, métodos y estructuras de control de flujo (if, while, for, etc.), pero NO para agrupar términos de expresiones aritméticas.
En cuanto a los corchetes, su uso está restringido para el manejo de estructuras de datos como arreglos unidimensionales y matrices.
Por lo tanto, si te encuentras con una expresión en la que se usan paréntesis y corchetes, deberás traducir los corchetes usando paréntesis.