### Precedence And Associativity Of Operators

### Precedence of operators

If more than one operators are involved in an expression then, C language has predefined rule of priority of 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 !). Suppose an expression:

(a>b+c&&d) This expression is equivalent to: ((a>(b+c))&&d) i.e, (b+c) executes first then, (a>(b+c)) executes then, (a>(b+c))&&d) executes

### Associativity of operators

Associativity indicates in which order two operators of same precedence(priority) executes. Let us suppose an expression:

a==b!=c

Here, operators `==`

and `!=`

have same precedence. The associativity of both `==`

and `!=`

is left to right, i.e, the expression in left is executed first and execution take pale towards right. Thus, `a==b!=c`

equivalent to :

(a==b)!=c

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

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

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 | Left to right |

= *= /= %= -= &= ^= |= <<= >>= |
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 |