Quick Summary:
(1) Because in real world, sooner or later, you have to work with procedural code.
(2) Because O.O.P. is more complex than Procedural Programming, therefore its better to learn Procedural Programming, first.
(3) Because O.O.P. works like an extension of Procedural Language, not just an alternative.
(4) Because in real world, programmers work with, and combine several ways to solve problems, A.K.A. "multiparadigm programming".
Extended Boring Description:
Point 1 is very clear, not further explanation.
Point 2, Classes, Inheritance, Polymorphysm, Interfaces, so on...
Point 3, I code Procedural Pascal before I learnt Object Oriented Pascal, when I got there I said: "look, classes are like small procedural programs... ...and you can make them talk to each other, cool !!!".
I heard the same from people who went from plain C to C plus plus.
Point 4, Most of times programmers combine several programming techniques or paradigms, or ways to solve a problem. Functional, Procedural, O.O.P., logical.
Even Java "Pure O.O." is not as plain object programming as it says.
+1 point fo saying "Procedural Programming" instead of "Structured Programming".
Or Modular Programming. These is important.
Altought, many times these terms are teach toghether and used interchangeably, they're not.
Structured Programming, include many concepts, not just using procedures, and one of them is making program not to look like "Spaghetti Code".
Today I read several "pure" O.O. programs that look like "Object Oriented Spaghetti Code", meaning that the programmer used O.O.P., but its code looks like a mess.
Many times, I can read a O.O. code and tell that the programmer learnt Structured Programming before O.O.P., because the code is clear and arranged.
And for Modular Programming, I have seen several apps. in C++ and PHP that doesn't use modules.*