You did not pick an easy example. 🙂
The split() is the most advanced and important operation. It's very powerful and thus does some very complex things internally.
Simplest for you to understand is that it tries to evaluate even out multiple options for potential splits and then chooses the version that creates the least 'stretching'.
Just get familiar with ', ~ and * for the beginning.
If that is clear, then you have already 95% of all you even want to code handled.