## What are Precedence and Associativity?

Precedence and Associativity are the rules that are used to determine the **operators** with the highest priority in evaluating an equation that contains different operations.

For **example**: `x = 10 + 5 * 2;`

In this example, x is assigned as 20, not 30 that’s because operator ***** has higher precedence than **+**, and hence it first gets multiplied (**5*2**), and then the result is added to 10.

**Lists operator precedence and associativity in C**

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 |