Initialization of instance variables, and executions of instance initializers, are done in order. In this case, it matters on how you typed it in -- think of it as running linearly from top to bottom.
This means that you should not be using forward references -- as variables later in the class are not initialized during initialization of eariler variables (or instance initializers). Actually, they are initialized (as you have seen), but with temporary default values -- like 0, 0.0, or null.
The compiler will do some checking to make sure that these forward references does not exist... but it does a poor job. One way to "trick" it is to reference it, by dereferencing an object -- as you have done by using the this variable. Another way is to call a method which uses it.