iOS quiz: 以下のdispatch_after()を使ったコードが1, 2, 3, 4という順で実行される理由を説明してください

NSLog(@"1");
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)); // 1 sec.
dispatch_after(delay, dispatch_get_main_queue(), ^{
    NSLog(@"4");
});
dispatch_after(delay, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSLog(@"2");
});
sleep(2); // 2 sec.
NSLog(@"3");