Q:

Why does this logic return "NOT"?

I received this question on a quiz and I am not completely sure why it returns "NOT". 
I know what all the operators in this block of code do (! is not, && checks to see if both operands are non-zero, etc.) but I don't understand how they work in this particular context.(Bear in mind I am very new to programming.) Like, is it checking to see if done and count are both values greater than zero and greater than MAX?
//Evaluate the following program logic and determine if the output string is "Completed" or "NOT".

int MAX = 100;
int count = 101;
Boolean done = true;

if(!(done && count > MAX))
  Console.WriteLine("Completed");
else
  Console.WriteLine("NOT");

A:

Lets do it step by step. When we put values to !(done && count > MAX) we get 
!(true && 101 > 100)

Lets add parenthesis to show priority or operators
!(true && (101 > 100))

Is 101 > 100 correct? Yes, in other words it is evaluated to true so we can replace it with it: 
!(true && true)

Here true && true is also evaluated to true, so we get 
!(true)

Now, negation (! operator) of true reverses it to false and that is final value of if's condition, causing its else branch (which prints NOT) to be executed.

