To a certain point, the answer is "that depends on the implementation". However, it's _very likely_ that the forwarding table is updated _as soon as possible_ , while BGP updates have a slightly lower priority and are processed _afterwards_. As you've described, it doesn't make sense to advertise a route that's not working yet.
Removing routes follows the same logic - an obsolete route is removed from the FIB before a BGP update can be sent out and processed by the other peers. In extreme, that could lead to a temporary routing loop.