 Here's a program that calculates a rebate based on the average order price. If your average order price is greater than or equal to $30, you get 5% rebate, otherwise none. The program reads the total amount purchased, a number of orders, and then evaluates this condition. If the number of orders is greater than zero, and the total divided by the number of orders is greater than or equal to 30, it calculates and prints the rebate, otherwise it tells you that you don't get one. Let's run this program with a total amount of purchases of $500 in 10 orders. That's greater than or equal to 30 for the average, and we get a rebate. Now let's run the program again with $500 in purchases, but this time let's accidentally enter zero for the number of orders. The program worked. How is that possible? Why didn't the program crash on this division? To answer this question, we need to take another look at the truth table for the AND operator. When the first condition is true, we need to look at the second condition to find out what the result will be. But when the first condition is false, there's no need to look at the second condition. We already know that the result must be false. C compiles your code to take advantage of this. When we ran the program with 10 orders, 10 is greater than zero, that's true, and C had to do the division to find out if the second condition, the average being greater than or equal to 30, was true or not. When we gave zero for the number of orders, zero is not greater than zero. The first condition came back false, which meant the program didn't have to look at the second condition at all. The division never happened. When C evaluates a compound condition, as soon as it can absolutely determine the result, it stops and doesn't evaluate anything else. This is called short-circuit evaluation. The OR operator also had short-circuit evaluation. When the first condition is true, it doesn't matter what the second condition is. The answer must be true. That means that in this code, if you work, say, 45 hours, the first condition will be true and the pay rate comparison will never happen. Short-circuit evaluation saves execution time by guaranteeing that your program will never do needless evaluation of conditions. And you can use short-circuit evaluation to your advantage by constructing your compound conditions appropriately.