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