The legalistic, nitpicky, but authoritative answer is given by
JLS 12.4: Initialization of classes and Interfaces, and
JLS 12.5 Creation of New Class Instances. Specifically this section:
JLS 12.4 wrote:
7. Next, if C is a class rather than an interface, then let SC be its superclass and let SI1, ..., SIn be all superinterfaces of C that declare at least one default method. The order of superinterfaces is given by a recursive enumeration over the superinterface hierarchy of each interface directly implemented by C (in the left-to-right order of C's implements clause). For each interface I directly implemented by C, the enumeration recurs on I's superinterfaces (in the left-to-right order of I's extends clause) before returning I.
For each S in the list [ SC, SI1, ..., SIn ], if S has not yet been initialized, then recursively perform this entire procedure for S. If necessary, verify and prepare S first.
If the initialization of S completes abruptly because of a thrown exception, then acquire LC, label the Class object for C as erroneous, notify all waiting threads, release LC, and complete abruptly, throwing the same exception that resulted from initializing S.
8. Next, determine whether assertions are enabled (§14.10) for C by querying its defining class loader.
9. Next, execute either the class variable initializers and static initializers of the class, or the field initializers of the interface, in textual order, as though they were a single block.
Item 7 boils down to initialize the superclass before any subclass. Item 9 justifies printing "1"", and then "8", in the code given.
And then later, this section:
JLS 12.5 wrote:3. This constructor does not begin with an explicit constructor invocation of another constructor in the same class (using this). If this constructor is for a class other than Object, then this constructor will begin with an explicit or implicit invocation of a superclass constructor (using super). Evaluate the arguments and process that superclass constructor invocation recursively using these same five steps. If that constructor invocation completes abruptly, then this procedure completes abruptly for the same reason. Otherwise, continue with step 4.
4. Execute the instance initializers and instance variable initializers for this class, assigning the values of instance variable initializers to the corresponding instance variables, in the left-to-right order in which they appear textually in the source code for the class. If execution of any of these initializers results in an exception, then no further initializers are processed and this procedure completes abruptly with that same exception. Otherwise, continue with step 5.
5. Execute the rest of the body of this constructor. If that execution completes abruptly, then this procedure completes abruptly for the same reason. Otherwise, this procedure completes normally.
Item 3 boils down to perform instance initialization for a superclass before instance initialization of any subclass. For the superclass Antelope, item 4 then justifies printing "2", and item 5 justifies printing "4". Then for subclass Gazelle, item 4 justifies printing "9", and item 5 justifies printing "3".
There are probably other sources floating around that present that info in a more digestible manner. But the JLS would be the official specification - warts and all.