 
                                    When humans evaluate expressions, they usually do so starting at the left of the expression and working towards the right. For example, working from left to right we get a result of 300 from the following expression:
10 + 20 * 10 = 300This is because we, as humans, add 10 to 20, resulting in 30 and then multiply that by 10 to arrive at 300. Ask C# to perform the same calculation and you get a very different answer:
int x;
x = 10 + 20 * 10;
Console.WriteLine (x)The above code, when compiled and executed, will output the result 210.
This is a direct result of operator precedence. C# has a set of rules that tell it in which order operators should be evaluated in an expression. Clearly, C# considers the multiplication operator (*) to be of a higher precedence than the addition (+) operator.
Fortunately the precedence built into C# can be overridden by surrounding the lower priority section of an expression with parentheses.
For example:
int x;
x = (10 + 20) * 10;
Console.WriteLine (x)In the above example, the expression fragment enclosed in parentheses is evaluated before the higher precedence multiplication resulting in a value of 300.
In order to understand the working of operator precedence in C#, we need to know the order of precedence of operators.
The following table outlines the C# operator precedence order from highest precedence to lowest:
| Category | Operator(s) | 
|---|---|
| Postfix / Prefix | (),[],->,.,++,– | 
| Unary | +,–,!,~,++,—,(type)*,&sizeof | 
| Multiplicative | *,/,% | 
| Additive | +,- | 
| Shift | <<,>> | 
| Relational | <,<=,>,>= | 
| Equality | ==,!= | 
| Bitwise AND | & | 
| Bitwise XOR | ^ | 
| Bitwise OR | | | 
| Logical AND | && | 
| Logical OR | || | 
| Conditional | ?: | 
| Assignment | =,+=,-=,*=,/=,%=,>>=,<<=,&= ,^=,|= | 
| Comma | , | 
C# program to demonstrate the precedence of operators.
Example:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            int res;
            int x = 8, y = 10, z = 6;
            res = --x * y - ++z;
            Console.WriteLine(res);
            bool res1;
            res1 = y >= z + x;
            Console.WriteLine(res1);
            Console.ReadLine();
        }
    }
}Output:

In the above program, in the expression –x * y – ++z, –x and ++z is evaluated first and then the resulting value of –x is multiplied with y and the resulting value is subtracted from the resulting value of ++z as per the operator precedence in c#.
And in the expression y >= z + x, z+x is evaluated first and the resulting value is compared with the value of y as per the operator precedence in c#.