#### Precedence of operators

If more than one operators are involved in an expression, C language has a predefined rule of priority for the operators. This rule of priority of operators is called operator precedence.

In C, precedence of arithmetic operators( *, %, /, +, -) is higher than relational operators(==, !=, >, <, >=, <=) and precedence of relational operator is higher than logical operators(&&, || and !).

Example of precedence

(1 > 2 + 3 && 4)

This expression is equivalent to:    ((1 > (2 + 3)) && 4)

i.e, (2 + 3) executes first resulting into 5

then, first part of the expression (1 > 5) executes resulting into 0 (false)

then, (0 && 4) executes resulting into 0 (false)

Output

0

Associatively of operators

If two operators of same precedence (priority) is present in an expression, Associativity of operators indicate the order in which they execute.

Example of associatively

1 == 2 != 3

Here, operators == and != have same precedence. The associatively of both == and != is left to right, i.e, the expression on the left is executed first and moves towards the right.

Thus, the expression above is equivalent to :

((1 == 2) != 3)

i.e, (1 == 2) executes first resulting into 0 (false)

then, (0 != 3) executes resulting into 1 (true)

Output

1

The table below shows all the operators in C with precedence and associatively.

Note: Precedence of operators decreases from top to bottom in the given table.

 Summary of C operators with precedence and associatively Operator Meaning of operator Associativity () [] -> . Functional call Array element reference Indirect member selection Direct member selection Left to right ! ~ + – ++ — & * sizeof (type) Logical negation Bitwise(1 ‘s) complement Unary plus Unary minus Increment Decrement Dereference Operator(Address) Pointer reference Returns the size of an object Type cast(conversion) Right to left * / % Multiply Divide Remainder Left to right + – Binary plus(Addition) Binary minus(subtraction) Left to right << >> Left shift Right shift Left to right < <= > >= Less than Less than or equal Greater than Greater than or equal Left to right == != Equal to Not equal to Left to right & Bitwise AND Left to right ^ Bitwise exclusive OR Left to right | Bitwise OR Left to right && Logical AND Left to right || Logical OR Left to right ?: Conditional Operator Right to left = *= /= %= -= &= ^= |= <<= >>= Simple assignment Assign product Assign quotient Assign remainder Assign sum Assign difference Assign bitwise AND Assign bitwise XOR Assign bitwise OR Assign left shift Assign right shift Right to left , Separator of expressions Left to right