Because of the way the compiler works, we need to be careful about the order in which we evaluate ast nodes