The simple expressions are literals such as integer and real numbers and names of variables.

- You can also combine them into complex expressions by using operators.
- Operator precedence and associativity determine the order in which the operations in an expression are performed.
- You can use parentheses to change the order of evaluation imposed by operator precedence and associativity.

The following example evaluates a simple mathematical expression.

```
public static void Example1()
{
string expression = "2 + 13";
ExpressionEvaluator evaluator = new ExpressionEvaluator();
Console.WriteLine(evaluator.Evaluate(expression));
}
```

You can also evaluate the `System.Math`

functions directly as shown in the below example.

```
public static void Example2()
{
string expression = "Pow(5, 3)";
ExpressionEvaluator evaluator = new ExpressionEvaluator();
Console.WriteLine(evaluator.Evaluate(expression));
}
```

The following example evaluates the random number.

```
public static void Example3()
{
string expression = "new(Random).Next(1,100)";
ExpressionEvaluator evaluator = new ExpressionEvaluator();
Console.WriteLine(evaluator.Evaluate(expression));
}
```

In an expression with multiple operators, the operators with higher precedence are evaluated before the operators with lower precedence.

In the following example, the multiplication is performed first because it has higher precedence than addition.

```
public static void Example4()
{
string expression = "2 + 2 * 2";
ExpressionEvaluator evaluator = new ExpressionEvaluator();
Console.WriteLine(evaluator.Evaluate(expression));
}
```

You can use the parentheses to change the order of evaluation imposed by operator precedence:

```
public static void Example5()
{
string expression = "(2 + 2) * 2";
ExpressionEvaluator evaluator = new ExpressionEvaluator();
Console.WriteLine(evaluator.Evaluate(expression));
}
```