Unity generally does not execute "two funtions at the same time", because the game logic is single-threaded. What likely happens is that the function which starts the button animation is executed. The actual animation happens in a coroutine which would be processed throughout future updates.
Then the scene change function is executed. The scene change also interrupts the tweening coroutine, which means it is never finished.
What you actually want to do is start the tween coroutine and then do the scene change when the tween coroutine finished. The Unity UI system doesn't know about the tween you are doing, so it can't know when it will be finished. That unfortunately means that you can't cleanly separate these two functionalities (animation and scene-change) because the second depends on the first being completed.
To do something when a DOTWEEN tween is finished, pass it as a callback method to the
OnComplete method of your Tweener. More about this in the DOTWEEN documentation under "Chained Callbacks".