**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 |