# Precedence of Operators in R

In this tutorial you will learn about the precedence of operators in R programming language.

## Precedence of Operators in R

Precedence of operators in programming language is the order in which the expression is evaluated. When more than one operators are used in an expression, we need to know the order in which the expression will be evaluated. Some operators are given high priority or preference over the other operators. That is some operators will be executed first in the expression regardless of their position in the expression.

In R every operator has given precedence. The following table shows the precedence of operators in R from highest to lowest.

Operators Meaning
[, [[ indexing
::, ::: access variables in a name space
$ component extraction ^ exponentiation (right to left) -, + unary minus and plus : sequence operator %any% special operators * multiply, divide +, - (binary) add, subtract <, >, <=, >=, ==, != ordering and comparison ! negation (NOT) &, && AND |, || OR ~ as in formula ->, ->> rightwards assignment = assignment (right to left) <-, <<- assignment (right to left) ? help (unary and binary) Note that within an expression, operators of equal precedence are evaluated from left to right. ## Some Examples of Operator Precedence in R ### Example 1: Operator Precedence in R Consider the example 20 + 3 * 8. According to the precedence rule, the operator * gets higher priority than the operator +. So R will first evaluate the multiplication (*) 3 * 8 and then use addition (+) to add 20 to the result of 3 * 8. 20 + 3 * 8 [1] 44 The order of the operations can be changed by using round parenthesis ( ). Consider the arithmetic expression (20 + 3)*8. According to the precedence rule, R will first evaluate the expression in parenthesis, that is (20 + 3) and then use multiplication (*) to multiply the result of (20 +3) by 8. (20 + 3)*8 [1] 184 Note that when there are more parenthesis (), then R will evaluate the inner parenthesis first and then evaluate the other parenthesis from inner to outer. ### Example 2: Operator Precedence in R Suppose you need to evaluate the arithmetic expression  11 / 4 / 6. 11 / 4 / 6 [1] 0.4583333 In the above R code, R will evaluate the division operation from left to right. That is first evaluate 11 / 4 and then the result of 11 / 4 is divided by 6. Suppose we use parenthesis 11 / (4 / 6). Then R will evaluate the parenthesis first and then 11 is divided by the result of (4 / 6). 11 / (4 / 6) [1] 16.5 ### Example 3: Operator Precedence in R Suppose you want to evaluate the expression$\frac{10+5}{2}$. If you write the expression like 10 + 5 /2, R will first evaluate the division 5 / 2 and then add the result to 10. 10 + 5 / 2 [1] 12.5 To overcome this, use parenthesis at appropriate place, like (10 + 5)/2. (10 + 5)/2 [1] 7.5 In this case, R first evaluate the parenthesis (10 +5) and then the result will be divided by 2. ### Example 4: Operator Precedence in R Suppose we have the expression  - 2 ^ 2: 2 ^3. In the expression, there are three operators : unary minus (-), exponent (^) and sequence :. Among these three operators, exponent (^) has the highest precedence, then unary minus (-) and then sequence operator (:). - 2 ^ 2:2 ^ 3  [1] -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 The evaluation of expression is as follows: • First R evaluate the exponent 2 ^ 2 (from left to right), resulting to 4. • Then evaluate 2 ^ 3 resulting to 8, • Then unary minus (-). That is attach the - sign to 2 ^ 2, resulting to -4. • And at the last, evaluate the sequence operator -4 : 8. ### Example 5: Operator Precedence in R Suppose we need to evaluate$4^{3^2}\$. To evaluate this expression we write the R code as 4 ^ 3 ^ 2.

4 ^ 3 ^ 2
[1] 262144

In the above R code, first 3 ^ 2 will be evaluated resulting to 9. Then 4 ^  9 will be evaluated.

When we use the R code (4 ^ 3) ^ 2 the answer will be as follows:

(4 ^ 3)^2
[1] 4096

And when we use the R code 4 ^ (3 ^ 2) the answer will be as follows:

4 ^ (3 ^ 2)
[1] 262144

Note that when there are more than one exponent operators (^) in an expression, R will evaluate the exponent (^) from right to left.

## Endnote

In this tutorial you learned about precedence of operators in R.