# C Precedence And Associativity Of Operators

## Precedence of operators

The precedence of operators determines which operator is executed first if there is more than one operator in an expression.

Let us consider an example:

``int x = 5 - 17* 6;``

In C, the precedence of `*` is higher than `-` and `=`. Hence, `17 * 6` is evaluated first. Then the expression involving `-` is evaluated as the precedence of `-` is higher than that of `=`.

Here's a table of operators precedence from higher to lower. The property of associativity will be discussed shortly.

### Operators Precedence & Associativity 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
Pointer reference
Returns the size of an object
Typecast (conversion)
Right to left
*
/
%
Multiply
Divide
Remainder
Left to right
+
-
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

## Associativity of Operators

The associativity of operators determines the direction in which an expression is evaluated. For example,

``b = a;``

Here, the value of a is assigned to b, and not the other way around. It's because the associativity of the `=` operator is from right to left.

Also, if two operators of the same precedence (priority) are present, associativity determines the direction in which they execute.

Let us consider an example:

`1 == 2 != 3`

Here, operators `==` and `!=` have the same precedence. And, their associativity is from left to right. Hence, `1 == 2` is executed first.

The expression above is equivalent to:

`(1 == 2) != 3`

Note: If a statement has multiple operators, you can use parentheses `()` to make the code more readable.