In order to apply a specific order, you need to set different sort field values for each of the overlapping events. If the sort field is set only one of them the rest will appear in random order. If you don't specify the "sortDirections" property it will use the default order which is that the event that starts first will be displayed first.
See also:
https://doc.daypilot.org/scheduler/event-sorting/
During scrolling and with progressive rendering enabled (default), the events are re-rendered as they come into the viewport and the DOM order doesn't necessarily correspond to the event order. In combination with eventStackingLineHeight = 0 it might result in an apparently random order. If this is the case, you'd have to turn off the progressive event rendering (https://api.daypilot.org/daypilot-scheduler-dynamiceventrendering/) to force the original order. Or shorten the events on the server side so they don't overlap.