@ Kronos
4) Possible scenario:
You write your code and accidently put assignment operator (=) instead of comparision (==) in some 'if' or loop. If you have -Wall switch enabled, GCC will generate a warning telling you that this may be possibly an error. You go there and if you see that this indeed should be an assignment and not a comparision, you put the parenthesis around it to tell GCC that it's ok this way. If GCC was right, you fix the bug.
Btw, good idea with the tutorial.