That's how BGP is supposed to work.
Think of BGP routing in a similar way to how you might choose an airline ticket - you may drive to an airport that is much farther away if you like that flight better by some criteria (time, duration, cost, airline, layovers, etc). Once the flight is chosen, it is at a specific time at a specific airport (i.e. specific interface on a specific router) and then the only consideration is how to get to the airport. Of course the trouble of getting to the airport might be too much, so you also take that into account when choosing the flight - if you had two flights that were otherwise equally good, you'd choose the more convenient airport.
So in very broad terms, Local preference is how your whole network can be set to follow a certain policy (e.g. "send traffic to YouTube through Level3, but use Hurricane Electric as the default").
Local Preference is the most important metric in the BGP path selection algorithm-
Except Cisco created an even higher priority metric, weight, which Mikrotik also uses. Weight is strictly internal to one particular router (there's no "weight" attribute in BGP messages on the wire)
So among equal-length prefixes, BGP will chose:
1: highest weight
2: highest LOCAL_PREF (this value is passed along in your IBGP so it's basically system-wide)
3: prefer originated routes over aggregated routes
4: AS Path length
5: route source = interior routing, exterior routing, unknown source
6: lowest MED (distance to target within the next network - only avail for multi-homing to same provider)
7: EBGP > IBGP
8: closest next-hop
9: older advertisements > newer advertisements
10: tiebreaker: lowest router_id that announced the route
11: tiebreaker: lowest peer IP address (if peering to same router over multiple connections)
As you can see, AS_PATH is far from being the most important criteria.
In the big leagues, routing policy is done with LOCAL_PREF and this can be tweaked by sending and receiving agreed-upon communities. Networks can send communities that mean things like "this is one of my customer's networks" or "this is one of my transit carrier's networks" etc - so your in-filter for a neighbor might set a high LOCAL_PREF for "customer networks" from carrier A, and a low LOCAL_PREF for their upstream routes, so that you use the link to ISP1 when going to their customers, but otherwise, they're a backup.... And you can send communities to them as well.
They often have communites that mean they should AS_PREPEND a number of times when passing your route along to customers/providers/peers, or that they shouldn't pass your advertisements to other networks (private peering, for instance).
In general, most carriers' routing policies I've read try to follow the basic idea that they send traffic to customers first, peers second, and paid transport providers last. So - if carrier X receives your advertisement from two paths, one being a short AS-PATH but from a peer network, and the other being heavily AS-prepended but from a customer path, then that's going to win. Of course, other networks on the other side of this carrier would see the heavily-prepended AS path and probably choose not to route via this carrier, but being a carrier, they're going to have lots of customers, and those customers are going to go straight to you, no matter how much you as-prepend.
I know this has been a long post, but I hope I've helped shed some light on how BGP routing policy is done.
When given a spoon,
you should not cling to your fork.
The soup will get cold.