This isn't strange at all.
Expressions are evaluated (executed) from within to outside, just like mathematical expressions.
So put it simple terms: the expression with the most parentheses around it is evaluated / executed first.
Simplified it is:
printf("1", printf("2", printf("3", printf("4"))));