The first pair of statements use no extra white-space. Normal precedence rules apply in complex expressions using two or more operators. String comparisons require eq, ne, gt, ge, lt, and le. Follow the link at that statement for an additional comment. Moreover, it seems to have gained widespread acceptance, so whatever new language comes along with the start of the new millennium will probably include it in its current format.
Initialization is done first.
Multiple initializations are supported, as shown in the example below. Next, the conditional is tested, so the block of statements may never execute. The step expression is executed after each pass through the block of statements. Once again, prefer being explicit to depending on such keystroke-saving defaults. Thus later modification of a subroutine won't inadvertently trash a returned value.